/*
 * @Author: Liu
 * @Date: 2023-05-08 16:39:44
 * @LastEditTime: 2023-05-19 23:31:36
 */

import axios from 'axios'; // 引入axio
import utils from "../utils/index"
import { showToast, showLoadingToast, closeToast } from 'vant';
import 'vant/es/toast/style';
// showLoadingToast({
//     message: '加载中...',
//     forbidClick: true,
//     loadingType: 'spinner',
//     className: 'noticeWidthLoading',
//     duration:0,   //所加样式名
//   });
// showToast({
//     message: '复制成功',
//     className: 'noticeWidth'   //所加样式名
//   });
// setTimeout(()=>{
//     closeToast()
// },5000  )
const service = axios.create({
    // baseURL: '/api',

    // 测试环境
    // baseURL: 'http://changan-demo.cloud-top.com.cn/',
    // 正式环境
    baseURL: import.meta.env.VITE_BASE_API,
    withCredentials: true,
    timeout: 30000 // 设置请求超时时间
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
        // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断


        // console.log(config) 
        // console.log(showToast)
        // showToast("wode")
        let token = utils.getToken()
        // console.log(token)
        config.headers = { 'token': token, 'content-type': 'multipart/form-data', ...config.headers }

        return config;
    },
    error => {

        // showToast("222s")
        return Promise.error(error);
    })


// 响应拦截器
service.interceptors.response.use(
    (response) => {
        // dataAxios 是 axios 返回数据中的 data

        const dataAxios = response.data
        const { config } = response
        // 这个状态码是和后端约定的

        if (dataAxios.error_code == 0) {
            return dataAxios
        } else {
            if (dataAxios.code == 401) {
                utils.delUserInfo();
                showToast({
                    message: dataAxios.msg,
                    className: 'noticeWidth'   //所加样式名
                });
            } else if (dataAxios.error_code === 999) {
                console.log(dataAxios.msg)
            } else {
                // sessionStorage.removeItem('isLogin')
                // if (config.url.indexOf('/user/login') < 0) {
                //     showToast({
                //         message: dataAxios.msg || '网络错误请稍后再试！',
                //         className: 'noticeWidth'   //所加样式名
                //     });
                // }
            }

            return Promise.resolve(dataAxios)
        }
    },
    (error) => {
        // sessionStorage.removeItem('isLogin');
        utils.delUserInfo();

        const { config } = error
        if (config.url.indexOf('/user/week/gift') < 0 ) {
            showToast({
                message: '网络错误请稍后再试！',
                className: 'noticeWidth'   //所加样式名
            });
        }
        return Promise.reject(error)
    }
);
export default service